package com.atguigu.strategy.improve;

public abstract class Duck {

	// 飞翔属性, 策略接口
	FlyBehavior flyBehavior;

	// 叫声属性， 策略接口
	QuackBehavior quackBehavior;

	public Duck() {

	}

	public abstract void display();// 显示鸭子信息

	public  void quack() {
		if(quackBehavior!=null){
			quackBehavior.quack();
		}else{
			System.out.println("鸭子嘎嘎叫~~");
		}
	}

	public void swim() {
		System.out.println("鸭子会游泳~~");
	}

	public void fly() {
		// 改进
		if (flyBehavior != null) {
			flyBehavior.fly();
		}
	}

	public void setFlyBehavior(FlyBehavior flyBehavior) {
		this.flyBehavior = flyBehavior;
	}

	public void setQuackBehavior(QuackBehavior quackBehavior) {
		this.quackBehavior = quackBehavior;
	}

}
